package 简单.数学;

import java.util.ArrayDeque;
import java.util.Deque;

/**
 * 给定一个整数 num，将其转化为 7 进制，并以字符串形式输出。
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/base-7/
 */
public class 七进制数_504 {

    public static void main(String[] args) {

        System.out.println(convertToBase7(-7));

    }

    /**
     * 负数转7进制，先转成正数，得出结果再转成负数
     * 不使用栈，用 stringBuilder.reverse()反转方法也是一样的
     *
     * @param num
     * @return
     */
    public static String convertToBase7(int num) {
        if (num == 0) {
            return "0";
        }
        Deque<String> stack = new ArrayDeque<>();
        StringBuilder stringBuilder = new StringBuilder();
        if (num < 0) {
            stringBuilder.append("-");
            num = -num;
        }
        while (num > 0) {
            stack.addFirst(String.valueOf(num % 7));
            num /= 7;
        }
        while (!stack.isEmpty()) {
            stringBuilder.append(stack.pollFirst());
        }
        return stringBuilder.toString();
    }

}
